package com.relife.common.utils;

import com.relife.common.exception.BusinessException;

import java.io.BufferedReader;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Random;
import java.util.regex.Pattern;



public class StringUtil {
	/**
	 * 
	 * @author WU
	 * @date 2015-5-18 上午12:21:30
	 * @param obj
	 * @return
	 */
	public static boolean isEmpty(Object obj) {
		return obj == null || "".equals(obj.toString().trim());
	}

	/**
	 * 
	 * @author WU
	 * @date 2015-5-18 上午12:21:30
	 * @param obj
	 * @return
	 */
	public static boolean isNotEmpty(Object obj) {
		return obj != null && !"".equals(obj.toString().trim());
	}

	/**
	 * 
	 * @author WU
	 * @date 2016年5月26日 下午3:28:06
	 * @param obj
	 * @return
	 */
	public static String toString(Object obj) {
		return obj == null ? "" : obj.toString();
	}

	/**
	 * 
	 * @author WU
	 * @date 2016年5月26日 下午5:12:54
	 * @param obj
	 * @return
	 */
	public static Integer toInteger(Object obj) {
		return obj == null ? null : Integer.parseInt(obj.toString());
	}

	/**
	 * 
	 * @author WU
	 * @date 2017年7月19日 上午9:51:19
	 * @param obj
	 * @return
	 */
	public static Long toLong(Object obj) {
		return obj == null ? null : Long.valueOf(obj.toString());
	}

	/**
	 * java string 首字母大写方法
	 * 
	 * @author WU
	 * @date 2015-5-1 下午6:34:55
	 * @param name
	 * @return
	 */
	public static String captureName(String name) {
		char[] cs = name.toCharArray();
		char[] z = "Z".toCharArray();
		if (cs[0] > z[0]) {
			cs[0] -= 32;//
		}
		return String.valueOf(cs);
	}

	/**
	 * java string 首字母小写方法
	 * 
	 * @author WU
	 * @date 2015-11-14 01:18:26
	 * @param name
	 * @return
	 */
	public static String lowerName(String name) {
		char[] cs = name.toCharArray();
		char[] a = "a".toCharArray();
		if (cs[0] < a[0]) {
			cs[0] += 32;
		}
		return String.valueOf(cs);
	}

	/**
	 * 获取随机数
	 * 
	 * @author WU
	 * @date 2015年9月7日 下午9:33:36
	 * @param length
	 * @return
	 */
	public static String getRandom(int len) {
		String randomStr = "";
		String rands = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
		Random random = new Random();
		while (randomStr.length() < len) {
			int ra = random.nextInt(rands.length());
			randomStr += rands.charAt(ra);
		}
		return randomStr;
	}

	/**
	 * 获取随机数
	 * 
	 * @author WU
	 * @date 2016年9月8日 上午10:34:03
	 * @param len
	 * @return
	 */
	public static String getRandomNo(int len) {
		String randomStr = "";
		String rands = "1234567890";
		Random random = new Random();
		while (randomStr.length() < len) {
			int ra = random.nextInt(rands.length());
			randomStr += rands.charAt(ra);
		}
		return randomStr;
	}

	/**
	 * Exception转成字符串
	 * 
	 * @author WU
	 * @date 2015年11月15日 下午4:47:09
	 * @param ex
	 * @return
	 */
	public static String exception2String(Exception ex) {
		StringWriter sw = new StringWriter();
		PrintWriter pw = new PrintWriter(sw);
		ex.printStackTrace(pw);
		return sw.toString();
	}

	/**
	 * 判断是否是手机号码
	 * 
	 * @author WU
	 * @date 2016年4月25日 下午4:49:36
	 * @param phone
	 * @return
	 */
	public static boolean isPhone(String phone) {
		return Pattern.compile("^[1][34578][0-9]{9}$").matcher(phone).matches();
	}

	/**
	 * 金额转大写
	 * 
	 * @author WU
	 * @date 2016年6月15日 下午3:49:57
	 * @param n
	 * @return
	 */
	public static String digitUppercase(double n) {
		String fraction[] = { "角", "分" };
		String digit[] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
		String unit[][] = { { "元", "万", "亿" }, { "", "拾", "佰", "仟" } };

		String head = n < 0 ? "负" : "";
		n = Math.abs(n);

		String s = "";
		for (int i = 0; i < fraction.length; i++) {
			s += (digit[(int) (Math.floor(n * 10 * Math.pow(10, i)) % 10)] + fraction[i]).replaceAll("(零.)+", "");
		}
		if (s.length() < 1) {
			s = "整";
		}
		int integerPart = (int) Math.floor(n);

		for (int i = 0; i < unit[0].length && integerPart > 0; i++) {
			String p = "";
			for (int j = 0; j < unit[1].length && n > 0; j++) {
				p = digit[integerPart % 10] + unit[1][j] + p;
				integerPart = integerPart / 10;
			}
			s = p.replaceAll("(零.)*零$", "").replaceAll("^$", "零") + unit[0][i] + s;
		}
		return head + s.replaceAll("(零.)*零元", "元").replaceFirst("(零.)+", "").replaceAll("(零.)+", "零").replaceAll("^整$", "零元整");
	}

	/**
	 * 
	 * @author WU
	 * @date 2017年5月26日 下午2:27:51
	 * @param br
	 * @return
	 */
	public static String getString(BufferedReader br) {
		StringBuilder sb = new StringBuilder();
		String line;
		try {
			while ((line = br.readLine()) != null) {
				sb.append(line);
			}
		} catch (Exception e) {
			throw new BusinessException("读取参数错误");
		}
		return sb.toString();
	}

	public static void main(String[] args) {
		System.out.println(StringUtil.digitUppercase(12345674.33));
	}

}
